home *** CD-ROM | disk | FTP | other *** search
- * Librairie de fonctions pour le controle de la carte Sound Blaster.
- * Compatible avec Borland C++ 3.1 et plus.
- * Autre compilateur ?peut-etre?
- * Librairie compile en LARGE.
- * L'enregistrement n'est pas possible dans cette version.
-
- Par Jean-Francois Belleau.
- (C)1994.
-
- J'ai mis enormement de temps dans cette librairie. Je travail sur une librairie
- polymorphique. Pour l'instant, je relache une version BETA du controle de la
- carte sound blaster seulement. J'ai aussi termine la Sound Blaster PRO avec le
- control du mixer. Elle sera relachee bientot. Je travaille donc sur la SB16.
- Ce n'est pas facile car il n'y a pas beaucoup d'informations disponibles.
- Le kit complet sera une librairie polymorphique assez puissante. Pour ceux qui
- ne connaisse pas le polymorphisme vous allez trouver ca capote et tres pratique
- lorsque la version finale sortira. Pour l'instant utiliser au maximum les
- possibilites de cette librairie.
-
- Bien sur il y a des messages qui apparaitront pour rendre a Cesar ce qui est
- a Cesar. Si la librairie fonctionne bien et que vous desirez l'utiliser dans
- vos programmes sans les messages contactez-moi. Je vous donnerai une license.
- Mais n'ayez crainte 20$ au plus.
-
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!Important!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- Vous utilisez les fichiers a vos propres risques. Je ne peux etre tenu responsable
- en aucun temps si des bris de n'importe quelle sorte survenais.
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!Important!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
- La librairie est presentement en test BETA. Il est donc normal que des bugs
- surviennent. Si jamais tel etait le cas, contactez-moi via:
-
-
- INTERNET:
- message a : djjf@biko.llc.org
-
- Le Quebecois:
- message a: Jean-Francois Belleau.
-
- ou au (418)837-7199.(Par voix).
-
- Adresse:
-
- Jean-Francois Belleau
- 231 des Commandeurs,
- Levis, PQ
- G6V 8A7
- Canada.
-
- Essayez d'etre le plus clair possible. Specifiez-moi aussi votre equipement.
- Si possible incluez votre code.
-
- N'hesitez pas a me donner vos commentaires aussi. Ils seront tres apprecies.
-
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-
-
-
-
- Fonctions disponibles:
- SB_DSP,
- ~SB_DSP,
- GetCradInfo,
- GetCurrentStatus,
- InitCard,
- Set8BitsDma,
- SetIOPort,
- SetIrq,
- SetOuputBuffer,
- SetOuputRawHandle,
- SetOuputVocHandle,
- SetOuputWaveHandle,
- SetSamplingRate,
- SetUserFlag,
- Start,
- Stop.
-
-
-
- Modules:
-
- -cardtype.h Fichier header qui contient certaines informations
- relative au carte.
-
- -dma8cnt.h Fichier header pour les fonctions DMA 8 bits.
- -dma8cnt.obj Code objet pour le controle dma 8 bits.
-
- -dsp8.h Fichier header pour les fonctions de bas niveau
- pour le control du dsp.
- -dsp8.obj Code objet pour le controle de bas niveau du dsp.
-
- -error.h Fichier header pour la definition des erreurs.
-
- -sbirq.h Fichier header pour les fonctions d'interruption.
- -sbirq.obj Code objet pour le controle des interruptions.
-
- -sbdsp.h Fichier header pour la classe d'interface avec
- la carte Sound Blaster.
- -sbdsp.obj Code objet pour la classe d'interface avec la carte
- Sound Blaster.
-
- -status.h Fichier header pour les definitions du statut de
- la carte.
-
- -structur.h Fichier header qui contient la structure d'infor-
- mation sur la carte.
-
- -type.h Fichier header qui contient diffent type de donnee.
-
-
- ATTENTION:
- Incluer toujours le fichier sbdsp.h et vous n'aurez aucun probleme.
-
- Toute les fonctions sont des fonctions de sbdsp.obj.
-
-
-
- SB_DSP:
- =======
- Description:
- Cette fonction est le constructeur de la classe pour la
- sound blaster de base.
-
- Entre: Aucun parametre.
-
- Retour: Aucun retour.
-
- Exemple:
- SB_DSP *sbDspPTR;
-
- sbDspPTR = new SB_DSP;
- ...
- ...
- ...
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- GetCardInfo:
- ============
- Description:
- Cette fonction retourne une strucutre d'information
- specifique sur la carte utilisee presentement.
-
- - La structure est definie dans structur.h
-
- - Ne jamais faire de delete sur le pointeur
- de la structure.
-
- Entre: Aucun parametre.
-
- Retour: *stc_CARD_INFO
- Un pointeur sur la structure qui contient
- les informations relatives a la carte.
-
- Exemple:
- SB_DSP *sbDspPTR;
- stc_CARD_INFO *cardSTC;
-
- sbDspPTR = new SB_DSP;
-
- if( sbDspPTR->InitCard() == err_INIT_DONE )
- {
- cardSTC = sbDspPTR->GetCardInfo();
- printf("Nom de la carte:%s",cardSTC->cardName);
- }
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- GetCurrentStatus:
- =================
- Description:
- Cette fonction retourne le statut courant de la carte.
-
- Entre: Aucun parametre.
-
- Retour:
- sta_IDLE : Si la carte ne fait rien.
- sta_OUTPUT_BUFFER : Si la carte joue un buffer.
- sta_OUTPUT_RAW_FILE : Si la carte joue un fichier raw.
- sta_OUTPUT_WAVE_FILE : Si la carte joue un fichier wav.
- sta_OUTPUT_VOC_FILE : Si la carte joue un fichier voc.
-
- Exemple:
- SB_DSP *sbDspPTR;
- sbDspPTR = new SB_DSP;
-
- if( sbDspPTR->InitCard() == err_INIT_DONE )
- {
- if( sbDspPTR->GetCurrentStatus() == sta_IDLE )
- printf("La carte ne joue pas presentement.");
- }
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- InitCard:
- =========
- Description:
- Cette fonction initialise la carte.
-
- Important:
- ----------
- Les fonctions SetIOPort, SetIrq, Set8BitsDma doivent etre
- appelees avant cette fonctions sinon les parametres par defaut
- seront utilisees.
-
- Entre: Aucun parametre.
-
- Retour:
- err_NO_CARD_FOUND: Si pas de carte trouve.
- err_INIT_DONE : Si la carte est initialise.
- Exemple:
- SB_DSP *sbDspPTR;
- sbDspPTR = new SB_DSP;
-
- sbDspPTR->SetIOPort(0x220);
- sbDspPTR->SetIrq(5);
- sbDspPTR->Set8BitsDma(1);
- if( sbDspPTR->InitCard() == err_INIT_DONE )
- printf("Carte presente");
- else
- printf("Carte non-trouvee");
-
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- Set8BitsDma:
- ============
- Description:
- Cette fonction permet de specifier le canal DMA a utilise pour le
- transfert de donnees sur 8 bits.
-
- Entre:
- unsigned: Le canal DMA a utilise.
-
- Retour:
- err_INVALID_DMA : Si le canal dma specifier n'est pas valide.
- err_VALID_DMA : Si le canal dma specifier est valide.
- Exemple:
- SB_DSP *sbDspPTR;
- sbDspPTR = new SB_DSP;
-
- if( sbDspPTR->Set8BitsDma(1) == err_VALID_DMA )
- printf("Canal DMA 8 bits valide.");
- else
- printf("Canal DMA 8 bits invalide.");
-
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- SetIOPort:
- ==========
- Description:
- Cette fonction permet de specifier le port IO pour les operations
- avec la carte de son.
-
- Les ports valides sont variables selon le type de carte.
- Voir l'array validIOPort dans sbdsp.h.
- Entre:
- unsigned : Le port IO a utilise.
-
- Retour:
- err_INVALID_PORT : Si le port IO specifier n'est pas valide.
- err_VALID_PORT : Si le port IO specifier est valide.
-
- Exemple:
- SB_DSP *sbDspPTR;
- sbDspPTR = new SB_DSP;
-
- if( sbDspPTR->SetIOPort(0x220) == err_VALID_PORT )
- printf("Port IO valide.");
- else
- printf("Port IO invalide.");
-
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- SetIrq:
- =======
- Description:
- Cette fonction permet de specifier la ligne IRQ qui sera utilisee
- pour communiquer avec la carte de son.
- Les IRQ valides sont variables selon le type de carte.
- Voir validIrq dans sbdsp.h.
- Entre:
- unsigned : La ligne IRQ a utilise.
-
- RETURN:
- err_INVALID_IRQ : Si l'IRQ specifier n'est pas valide.
- err_VALID_IRQ : Si l'IRQ specifier est valide.
-
- Exemple:
- SB_DSP *sbDspPTR;
- sbDspPTR = new SB_DSP;
-
- if( sbDspPTR->SetIrq(0x220) == err_VALID_IRQ )
- printf("IRQ valide.");
- else
- printf("IRQ invalide.");
-
- delete sbDspPTR;
-
- ------------------------------------------------------------------------------
- SetOutputBuffer:
- ================
- Description:
- Cette fonction permet de specifier le buffer qui sera utilise pour
- transferer les echantillons du PC vers la CARTE.
-
- Utilise cette fonction pour jouer un buffer memoire. Le buffer doit
- etre plus petit que 64k et n'a pas besoin d'etre "aligne."
- Pour jouer un buffer > 64k utilise la fonction pour jouer un fichier
- de type raw.
- NB: Voir SetOutputVocHandle,SetOutputWaveHandle et SetOutputRawHandle
- pour faire jouer des fichiers.
-
- Entre:
- char * : Le buffer d'echantillons.
- unsigned : La longueur du buffer.
-
- Retour:
- err_INVALID_BUFFER: Si le buffer specifier est a NULL.
- err_VALID_BUFFER : Si le buffer specifier est valide.
-
- Exemple:
- Voir le fichier ex1.cpp
-
- ------------------------------------------------------------------------------
- SetOutputRawHandle:
- ===================
- Description:
- Cette fonction permet de specifier le handle de fichier qui sera
- utilise pour transferer les donnees du PC vers la CARTE. Le fichier
- doit etre de type RAW, c'est a dire juste les donnees echantillonnees.
- Le fichier doit etre ouvert avec la fonction "open".
-
- Entre:
- int : Le handle de fichier a utiliser.
-
- Retour:
- err_INVALID_HANDLE: Si le handle specifier est a -1.
- err_VALID_HANDLE : Si le handle specifier est valide.
-
- Exemple:
- Voir le fichier ex2.cpp
-
-
- ------------------------------------------------------------------------------
- SetOutputVocHandle:
- ===================
- Description:
- Cette fonction permet de specifier le handle de fichier qui sera
- utilise pour transferer les donnees du PC vers la CARTE. Le fichier
- doit etre de type .VOC. Ce sont les fichiers utilises par Creative LABS.
- Seul la version 1.1 est supportee. Il reste encore quelque bugs.
- Le fichier doit etre ouvert avec la fonction "open".
-
- Entre:
- int : Le handle de fichier a utiliser.
-
- Retour:
- err_INVALID_HANDLE: Si le handle specifier est a -1.
- err_VALID_HANDLE : Si le handle specifier est valide.
- err_NOT_SUPPORTED_FILE: Si le fichier est non supporte.
-
- Exemple:
- Voir le fichier ex3.cpp
-
- ------------------------------------------------------------------------------
- SetOutputWaveHandle:
- ====================
- Description:
- Cette fonction permet de specifier le handle de fichier qui sera
- utilise pour transferer les donnees du PC vers la CARTE. Le fichier
- doit etre de type .WAV. Ce sont les fichiers utilises par windows.
- Le fichier doit etre ouvert avec la fonction "open".
-
- Entre:
- int : Le handle de fichier a utiliser.
-
- Retour:
- err_INVALID_HANDLE: Si le handle specifier est a -1.
- err_VALID_HANDLE : Si le handle specifier est valide.
- err_NOT_SUPPORTED_FILE: Si le fichier est non supporte.
-
- Exemple:
- Voir le fichier ex4.cpp
-
- ------------------------------------------------------------------------------
- SetSamplingRate:
- ================
- Description:
- Cette fonction permet de specifier la vitesse a laquelle les echantilons
- seront joues ou enregistre.
- Cette fonction doit etre utilise avant la fonction SetOutputBuffer.
- Les fonctions qui jouent les fichiers a partir du disque dur s'occupe
- de selectionner le bon sampling rate.
-
- Les ranges valides sont variables selon le type de carte.
-
- Entre:
- unsigned : La vitesse d'echantilonage.
-
- Retour:
- err_INVALID_RATE: Si le sampling rate specifier est trop grand
- il sera ajuster au plus haut.
- Si le sampling rate specifier est trop petit
- il sera ajuster au plus petit.
- err_VALID_RATE : Si le sampling rate specifier est dans la
- marge de ceux de la carte.
-
- Exemple:
- Voir le fichier ex1.cpp
-
- ------------------------------------------------------------------------------
- SetUserFlag:
- ============
- Description:
- Cette fonction permet de specifier un flag qui indique la fin de
- la sorite d'un buffer ou d'un fichier. La valeur sera a 1 lorsque la
- sortie sera terminer.
-
-
- Entre:
- unsigned *: Le pointeur au flag.
-
- Retour:
- Aucun retour;
-
- Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
-
- ------------------------------------------------------------------------------
- Start:
- ======
- Description:
- Cette fonction demare le transfer entre le PC et la CARTE. Si un
- un output buffer ou output handle a ete specifier, la fonction le fera
- jouer en sortie, sinon si un input buffer a ete specifier, la fonction
- enregistrera.
-
- Entre:
- Aucun parametre.
-
- Retour:
- err_NO_BUFFER_SPECIFIED: Si pas de buffer ou de handle specifier.
- Aucune action n'est entreprise.
- err_OUTPUT_STARTED: Si joue un buffer.
- err_INPUT_STARTED: Si enregistre dans un buffer.
-
- Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
-
- ------------------------------------------------------------------------------
- Stop:
- =====
- Description:
- Cette fonction arrete le transfer entre le PC et la CARTE.
-
- Entre:
- Aucun parametre.
-
- Retour:
- err_NOT_STARTED : Si la carte n'est pas en utilisation.
- err_OUTPUT_STOPPED: Si joue un buffer et arreter correctement.
- err_INPUT_STOPPED : Si enregistre dans un buffer et arreter.
-
- Exemple: Voir les fichiers ex1.cpp,ex2.cpp,ex3.cpp.
-
- ------------------------------------------------------------------------------